/*
* This file is part of RoboDS (http://code.google.com/p/robods/)
* Copyright (C) 2007 Blakharaz
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* 
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* 
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
*/

#include "AutomaticEffectsState.h"
#include "UserInterface.h"

namespace robo
{

AutomaticEffectsState::AutomaticEffectsState(Game* game, UserInterface* ui)
:   GameState(game),
    mFrameCounter(0),
    mUI(ui)
{
}

AutomaticEffectsState::~AutomaticEffectsState()
{
}

void AutomaticEffectsState::resume()
{
	mFrameCounter = 0;
	switchPhase(PHASE_AUTOMATIC_CONVEYOURS_EXPRESS_1);
}

void AutomaticEffectsState::handleEvents()
{
	///@todo automatic effects
	//if (mFrameCounter == 30)
	{
		BoardElementPhase newPhase = static_cast<BoardElementPhase>(mPhase + 1);
		if (newPhase == PHASE_AUTOMATIC_END_OF_TURN)
		{
			switchGameState(GameState::ROBOT_MOVEMENT);
		}
		else
		{
			switchPhase(newPhase);
		}
	}

	mFrameCounter++;
}

GameState::StateType AutomaticEffectsState::getType() const
{
	return GameState::BOARD_EFFECTS;
}

void AutomaticEffectsState::addController(RobotController* controller)
{
	mControllers.push_back(controller);
}

void AutomaticEffectsState::switchPhase(BoardElementPhase phase)
{
	mPhase = phase;
	mFrameCounter = 0;
}

}
